100 GOSUB 50000 / ASK IF START A NEW PROBLEM / CONTINUE WITH OLD PROBLEM
150 IF DT# = 2 THEN GOSUB 36000 / IF OLD PROBLEM THEN READ FILE
200 GOSUB 53000 / OPEN AND FIELD FILES
300 IF DT# = 1 THEN GOSUB 10000 /IN NEW ANALYSIS THEN ASK INTRODUCTORY QUESTIONS
310 GOSUB 12000 / READ SUBPROBLEMS AND PRIORITY INTO MEMORY
320 GOTO 20000 / START
500 REM ******* CLS
510 CLS /CLEAR SCREEN
520 RETURN
8000 REM ***** FILE NAME ACCEPLABLE TEST ************
8010 TEST = 1 / INITIALIZE TO TEST OK
8100 FOR Q = 1 TO LEN(A$) / FOR THE LENGTH OF THE STRING
8110 K$(Q) = MID$(A$,Q,1) / THE Q'th character in the string
8120 C = ASC(K$(Q)) / ASCII VALUE
8130 IF C < 48 OR C > 122 THEN TEST = 4 / IF NOT A LETTER OR NUMBER THEN TEST NOT OK
8140 IF Q = 1 AND ( C < 65 OR C > 122 ) THEN TEST = 4 / IF FIRST CHARACTER AND TEST NOT A LETTER THEN FAIL TEST
8150 NEXT Q / NEXT CHARACTER
8190 RETURN
10000 REM INITAL ASK ALL QUESTIONS
10010 GOSUB 500 / CLEAR SCREEN
10020 NEFLG = 5
10030 PRINT " START A NEW ANALYSIS "
10035 PRINT ""
10040 PRINT " The computer will ask you the introductory questions "
10045 PRINT ""
10050 PRINT " Answer the questions by entering the answer then press return "
10055 PRINT ""
10060 PRINT " You may enter N for no answer"
10065 PRINT ""
10070 PRINT " PRESS ANY KEY TO CONTINUE "
10080 IF INKEY$ = "" THEN 10080 / STAY HERE UNTILL ANY KEY IS PRESSED
10100 FOR R = 1 TO MRN1 / FOR ALL RECORDS IN THE SOLUTION FILE
10103 ANS(R) = -999 / ANSWER EQUALS NO ANSWER
10104 RN = R / RECORD NUMBER EQUALS R
10105 GOSUB 54100 / GET QUESTION
10110 IF Q2 = 2 THEN GOSUB 10200 / IF AN INTRODUCTORY QUESTION, ALWAYS ASKED THEN ASK
10120 NEXT R
10125 NEFLG = 0 /NEW ENTRY FLAG OFF
10130 RETURN
10200 REM ASK QUESTION
10210 GOSUB 500 /CLEAR SCREEN
10240 PRINT Q$ /PRINT QUESTION
10250 IF ABS(Q3) > 1 THEN 10400 /IF QUESTION IS CONTINUED
10260 GOSUB 60120 / INPUT ANSWER TO THE QUESTION
10265 IF DT# = -999 AND NFLG = 0 THEN 10500 / DO NOT ACCEPT -999 AS AN ANSWER
10270 ANS(R) = DT# / ANSWER
10290 RETURN
10400 REM PRINT CONTINUED QUESTIONS
10410 RN = ABS(Q3)
10420 GOSUB 54100 /GET RECORD
10430 PRINT Q$ /PRINT CONTINUED QUESTION
10440 GOTO 10250 / BACK TO ANSWER QUESTION
10500 REM DONT ACCEPT -999
10510 PRINT " THE COMPUTER WILL NOT ACCEPT -999 FOR AN ANSWER BECAUSE IT IS THE "
10520 PRINT " CODE FOR NO ANSWER "
10530 PRINT " PLEASE GIVE ANOTHER ANSWER FOR THE QUESTION "
10540 GOTO 10260
10600 REM DONT ACCEPT -999
10610 PRINT " THE COMPUTER WILL NOT ACCEPT -999 FOR AN ANSWER BECAUSE IT IS THE "
10620 PRINT " CODE FOR NO ANSWER "
10630 PRINT " PLEASE GIVE ANOTHER ANSWER FOR THE QUESTION "
10640 GOTO 31130
11000 REM READ OLD DATA
12000 REM READ SUBPROBLEMS AND PRIORITY
12100 FOR T = 1 TO MRN2 / FOR ALL PROBLEMS
12110 GET #2,T / GET PROBLEM RECORD
12120 SB(T) = CVI(P2$) / SUBPROBLEM TOO
12130 PRI(T) = CVI(P3$) / PRIORITY
12140 NEXT T
12150 RETURN
17000 REM CHECK FOR CONTINUED QUESTIONS
17100 IF ABS(Q3) <= 1 THEN RETURN /IF QUESTION NOT CONTINUED THEN RETURN
17110 RN = ABS(Q3) / RECORD NUMBER EQUALS ABSOLUTE VALUE OF Q3
17120 GOSUB 54000 / GET QUESTION
17122 KTQ = KTQ - 1 / DECREMENT QUESTION COUNT
17130 PRINT TAB(8) Q$ / PRINT CONTINUED QUESTION
17135 IF PRTFLG = 2 THEN LPRINT TAB(8)Q$ / IF LINE PRINT FLAG THEN PRINT ON PAPER
17140 GOTO 17100 / GO BACK TO SEE IF QUESTION IS CONTINUED FURTHER
17200 RN = T
17208 IF ABS(Q3) <= 1 THEN RETURN /IF QUESTION NOT CONTINUED THEN RETURN
17210 RN = ABS(Q3) / RECORD NUMBER EQUALS ABSOLUTE VALUE OF Q3
17220 GOSUB 54000 / GET RECORD NUMBER
17230 LPRINT TAB(8) Q$ / PRINT QUESSTION
17240 GOTO 17200 / GO BACK TO CHECK IF FURTHER CONTINUED
18000 REM PRINT SINGLE PROBLEM AND SUPPORTING EVIDENCE
18010 PRINT "****** MAKE SURE YOUR PRINTER IS ON ******"
18100 PRINT "WHICH PROBLEM DO YOU WANT PRINTED ON PAPER ?"
18105 PRINT " ENTER 0 TO RETURN "
18110 GOSUB 60060 /INPUT INTEGER SUBROUTINE
18115 IF DT# = 0 THEN 20000 / OPTION TO RETURN
18120 RN = DT# / RECORD NUMBER EQUALS NUMBER ENTERED
18130 GOSUB 54200 /GET PROBLEM
18140 LPRINT RN;P1$;TAB(60) PFOR(RN);TAB(65) PA(RN) /PRINT RECORD NUMBER, PROBLEM DESCRIPTION, PROBABLITY FOR AND AGAINST
18145 T = RN
18150 GOSUB 34000 / PRINT SUPPORTING QUESTIONS
18160 GOTO 20000 /BACK TO START
19000 REM **** OPTIONS MENU
19100 PRINT "** OPTIONS ** 0 - NONE 1 - SAVE 2 - PRINT OPTIONS DISPLAYED ON PAPER "
19110 PRINT "3 - REVIEW ALL PROBLEMS 4 - ALL QUESTIONS & ANSWERS 5 - PRINT PROBLEM 6-EXIT"
19150 GOSUB 60000
19160 IF DT# < 0 OR DT# > 6 THEN 19150 /LIMIT CHECK
19170 IF DT# = 0 THEN 20000 /BACK TO START
19180 ON DT# GOTO 35000,24000,37000,41000,18000,51000 /ON OPTION GOTO
20000 REM START SEARCH
20005 LPRTFLG = 0 /LINE PRINT FLAG = NO
20007 KTQ = 0 / QUESTION COUNT 0
20008 PRTFLG = 0 / PRINT FLAG 0
20010 H = 0 / HOLD 0
20020 GOSUB 500 /CLEAR SCREEN
20030 KT = 0 / COUNT 0
20035 IF SB(ND) > 3000 THEN ND = 0 / IF SUBPROBLEM TO > 3000 THEN LET NODE = 0
20040 GOSUB 21000 /PRINT SUBPROBLEMS
20050 PRINT " # PROBLEM ";TAB(60) " + - P CK CONT"
20055 IF LPRTFLG = 1 THEN LPRINT " # PROBLEM ";TAB(60) " + - P CK CONT"
20100 FOR T = 1 TO MRN2 / FOR ALL PROBLEMS
20110 IF SB(T) = ND OR SB(T) = -ND THEN GOSUB 20500 / IF SUBPROBLEM TO THEN PRINT
20120 NEXT T / NEXT PROBLEM
20140 IF ND = 0 AND H = 0 THEN PRINT "END OF COMPUTER RECOMMENDATIONS, EXIT OR CONDUCT MANUAL SEARCH" /ALL START PATHS ALREADY CHECKEC
20150 IF ND <> 0 AND H = 0 THEN PRINT "COMPUTER RECOMMENDS BACKTRACK TO SUBPROBLEM";SB(ND) /ALL PATHS ALREADY CHECKED
20200 PRINT "BRANCH ? * NEGATIVE NBR TO OVERRIDE * 9999 TO OPTIONS *";
20205 IF H > 0 THEN PRINT " COMPUTER RECOMMENDS";H ELSE PRINT " " /PRINT UNEXPLORED PATH WITH HIGHEST PRIORITY
20210 RN = P12 /RECORD NUMBER EQUALS QUESTION RULE 1
20250 GOSUB 60060 / INPUT SUBROUTINE
20252 IF DT# > 9998 THEN 19000 / TO OPTIONS SUBROUTINE
20253 IF ABS(DT#) > MRN2 THEN 20250 / LIMIT CHECK
20255 IF DT# > 0 THEN 30000 / IF GREATER THEN ZERO THEN ASK QUESTIONS
20260 ND = -DT# / NODE
20265 IF SB(ND) < 0 THEN 20250 /REFUSE CONTINUED OR END NODES
20270 GOTO 20000 /START
20500 REM PRINT STARTING NODE ON SCREEN
20504 PB = T /PROBLEM
20505 GOSUB 22000 / COMPUTE PROBABILITY
20510 RN = T /RECORD NUMBER EQUALS T
20520 GOSUB 54200 /GET RECORD
20530 PRINT RN;TAB(6) P1$;TAB(60) PFOR(T);TAB(65) PA(T);TAB(70) P3; /PRINT RECORD NUMBER,PROBLEM,PROBABILTY FOR, AGAINST,
20532 IF EVAL(T) = 1 THEN PRINT TAB(73) "PC "; /PARTIALLY CHECKED
20533 IF EVAL(T) = 0 THEN PRINT TAB(73) "NC "; /NOT CHECKED
20534 IF EVAL(T) = 2 THEN PRINT TAB(73) "C "; / CHECKED
20535 IF SB(T) >-1 THEN PRINT "CONT" ELSE PRINT "END" /
20537 IF PFOR(T) > 89 AND PA(T) > 89 THEN PRINT " PROBABLE CONTRADICTORY EVIDENCE " /IF BOTH PROBABILTY FOR AND AGAINST ARE HIGH THEN PRINT CONTRADICTORY EVIDENCE
20540 KT = KT + 1 /INCREMENT COUNT
20545 IF PRI(T) > PRI(H) AND EVAL(T) = 0 THEN H = T /IF HIGHER PRIORITY THEN
20547 IF LPRTFLG = 1 THEN GOSUB 20600 /IF LINE PRINT FLAG
20550 RETURN
20600 REM PRINT ON PAPER
20630 LPRINT RN;TAB(6) P1$;TAB(60) PFOR(T);TAB(65) PA(T);TAB(70) P3; /PRINT REOCD NUMBER PROBLEM PROBABILTY FOR PROBABILTY AGAINST
20632 IF EVAL(T) = 1 THEN LPRINT TAB(73) "PC "; /PARTIALY CHECKED
20633 IF EVAL(T) = 0 THEN LPRINT TAB(73) "NC "; /NOT CHECKED
20634 IF EVAL(T) = 2 THEN LPRINT TAB(73) "C "; / CHECKED
20635 IF SB(T) >-1 THEN LPRINT "CONT" ELSE LPRINT "END"
20637 IF PFOR(T) > 89 AND PA(T) > 89 THEN LPRINT " PROBABLE CONTRADICTORY EVIDENCE "
20650 RETURN
21000 REM PRINT SUBRECORDS UP TO 0
21005 IF ND = 0 THEN PRINT "AT STARTING NODE 0" /AT STARTING NODE
21006 IF ND = 0 THEN RETURN / IF AT STARTING NODE THEN RETURN
21010 PRINT "SUBPROBLEMS OF :"
21015 IF LPRTFLG = 1 THEN LPRINT "SUBPROBLEMS OF :"
21100 T = ND / NODE
21105 T = ABS(T) / CHANGE NEGITIVES TO POSITIVE
21110 RN = T /RECORD NUMBER
21115 IF RN = 0 THEN RETURN /IF AT STARTING NODE THEN RETURN
21120 GOSUB 54200
21130 PRINT RN;TAB(6) P1$,TAB(60) PFOR(T);TAB(65) PA(T) /PRINT RECORD NUMBER, PROBLEM, PROBABILTY FOR AND PROBABILITY AGAINST
21135 IF LPRTFLG = 1 THEN LPRINT RN;TAB(6) P1$,TAB(60) PFOR(T);TAB(65) PA(T)
21140 T = SB(T) / SUBPROBLEM OF
21145 T = ABS(T) / CHANGE NEGITIVE TO POSITIVE
21150 GOTO 21110 / PRINT NEXT SUBPROBLEM
22000 REM compute probability
22010 PA(PB) = 0 /INITIALIZE TO 0
22020 PFOR(PB) = 0 /INITIALIZE TO 0
22030 DCHKFLG = 0 / DOUBLECHECK FLAG = 0
22100 RN = PB / RECORD NUMBER = PROBLEM NUMBER
22105 RNH = RN /RECORD NUMBER HOLD = RECORD NUMBER
22110 T4= RN
22120 S = SB(T4) / SUBPROBLEM TO RECORD
22125 S = ABS(S) / CHANGE NEGITIVES TO POSITIVE
22128 IF S > 2000 THEN RETURN / IF SUBPROBLEM > 30000 THEN RETURN
22130 IF S = 0 THEN 22300 /END OF SUBPROBLEMS
22140 IF PA(S) > PA(RN) THEN PA(RN) = PA(S) /FIND MAXIMUM PROBILITY AGAINST OF ALL THE SUBPROBLEMS
22150 S = SB(S) / SUBPROBLEM OF
22155 S = ABS(S) / CHANGE NEGITIVES TO POSITIVE
22160 GOTO 22130 / CONTINUE UNTILL AT NODE 0
22300 GOSUB 54200 / GET RECORD
22310 IF ANS(P8) = -999 THEN 22410 /IF NO ANSWER
22315 ANS = ANS(P8) /ANSWER
22320 RT = P7 /RULE TYPE
22330 QN = P8 /QUESTION
22340 FV = P9! /FACT VALUE
22350 PB = P10 /PROBABILITY
22360 GOSUB 23000 /COMPUTE PROBABILITY
22410 IF ANS(P12) = -999 THEN 22510 / IF NO ANSWER
22415 ANS = ANS(P12) / ANSWER
22420 RT = P11 /RULE TYPE
22430 QN = P12 /QUESTION NUMBER
22440 FV = P13! /FACT VALUE
22450 PB = P14 /PROBABILITY
22460 GOSUB 23000 / COMPUTER PROBABILITY
22510 IF ANS(P16) = -999 THEN 22610 / NO ANSWER
22515 ANS = ANS(P16) /ANSWER
22520 RT = P15 /RULE TYPE
22530 QN = P16 /QUESTION NUMBER
22540 FV = P17! /FACT VALUE
22550 PB = P18 PROBABILITY
22560 GOSUB 23000 / COMPUTE PROBABILITY
22610 IF ANS(P20) = -999 THEN 22710 / IF NO ANSWER
22615 ANS = ANS(P20) /ANSWER
22620 RT = P19 / RULE TYPE
22630 QN = P20 / QUESTION NUMBER
22640 FV = P21! FACT VALUE
22650 PB = P22 / PROBABILTY
22660 GOSUB 23000 / COMPUTE PROBABILITY
22710 IF ANS(P24) = -999 THEN 22800 /IF NO ANSWER
22715 ANS = ANS(P24) /ANSWER
22720 RT = P23 /RULE TYPE
22730 QN = P24 /QUESTION NUMBER
22740 FV = P25! /FACT VALUE
22750 PB = P26 /PROBABILITY
22760 GOSUB 23000
22800 REM REDUCE EVALUATION TO PARTIAL CHECK
22810 IF EVAL(RN) = 0 THEN 22880 /SKIP IF NOT EVALUATED
22820 IF EVAL(RN) = 1 THEN 22880 /SKIP IF ALREADY A PARTIAL CHECK
22830 IF ANS(P8) = -999 THEN EVAL(RN) = 1 /IF NOT ANSWERED THEN REDUCE TO A PARTIAL CHECK
22835 IF P11 = 0 THEN 22880 /IF NO QUESTION
22840 IF ANS(P12) = -999 THEN EVAL(RN) = 1 /IF NOT ANSWERED THEN REDUCE TO PARTIAL CHECK
22845 IF P15 = 0 THEN 22880 / IF NO QUESTION THEN CONTINUE
22850 IF ANS(P16) = -999 THEN EVAL(RN) = 1 / IF NOT ANSWERED THE REDUCE TO PARTIAL CHECK
22855 IF P19 = 0 THEN 22880 / IF NO QUESTION THEN CONTINUE
22860 IF ANS(P20) = -999 THEN EVAL(RN) = 1 / IF NOT ANSWERED THEN REDUCE TO PARTIAL CHECK
22865 IF P23 = 0 THEN 22880 / IF NO QUESTION THEN CONTINUE
22870 IF ANS(P24) = -999 THEN EVAL(RN) = 1 /IF NOT ANSWERED THEN REDUCE TO PARTIAL CHECK
22880 IF ABS(P5) > 1 THEN GOTO 22910 / IF CONTINUED
22890 IF DCHKFLG = 5 THEN 22950 / IF DOUBLECHECKED THEN
22900 RETURN
22910 REM COMPUTE PROBABILITY FOR CONTINUED PROBLEMS
22915 RNH = RN /RECORD NUMBER HOLD EQUALS RECORD NUMBER
22918 DCHKFLG = 5 /DOUBLECHECK FLAG
22920 RN = ABS(P5) / RECORD NUMBER EQUALS THE CONTINUED ON
22930 GOSUB 54200 / GET RECORD
22935 RN = RNH /RESTORE RECORD NUMBER
22940 GOTO 22310 / CONTINE TO COMPUTER PROBABILITY
22950 REM RETURN FOR CONTINUED PROBLEMS
22960 RN = RNH /RESTORE RECORD NUMBER
22970 GOSUB 54200 /RESTORE RECORD
22980 RETURN
23000 REM CALCULATE
23010 TEST = 0 / INITIALIZE TO TESET
23020 IF RT = 0 THEN RETURN /IF RULE TYPE 0 NO RULE THEN RETURN
23100 ON RT GOSUB 23500,23600,23700,23800 /ON RULE TYPE
23120 IF TEST = 0 THEN RETURN / IF FAILED TEST THEN RETURN
23130 IF PB < 0 THEN 23300 / IF NEGITIVE PROBABILITY
23140 PFOR(RN) = INT(PFOR(RN) + (100 - PFOR(RN))*(PB/100)) /COMPUTES NEW PROBABILITY FOR
23150 RETURN
23300 PA(RN) = INT(PA(RN) + (100 - PA(RN))*ABS(PB/100)) / COMPUTES NEW PROBABILTY AGAINST
23310 RETURN
23500 REM EQUALS TEST
23510 IF ANS = FV THEN TEST = 1 / IF ANSWER EQUALS FACT VALUE THEN TEST GOOD
23520 RETURN
23600 REM LESS THEN TEST
23610 IF ANS < FV THEN TEST = 1 / IF ANSWER LESS THEN FACT VALUE THEN TEST GOOD
23620 RETURN
23700 IF ANS > FV THEN TEST = 1 / IF ANSWER GREATER THEN FACT VALUE THEN TEST GOOD
23710 RETURN
23800 REM LESS THEN TEST
23810 IF ANS <> FV THEN TEST = 1 / IF ANSWER NOT EQUAL TO FACT VALUE THEN TEST GOOD
23820 RETURN
24000 REM ***** PRINT NODE
24100 LPRTFLG = 1 /LINE PRINT FLAG IS ON
24110 PRINT " MAKE SURE YOUR PRINTER IS ON "
24120 PRINT " PRESS ANY KEY TO CONTINUE "
24130 IF INKEY$ = "" THEN 24130 / STAY HERE UNTILL ANY KEY IS PRESSED
24200 GOTO 20010
30000 REM ASK SEARCH QUESTIONS
30100 RN = ABS(DT#) / CHANGE NEQITIVES TO POSITIVE
30101 IF SB(RN) > 3000 THEN 20000 / IF SUBPROBLEM TO > 3000 THEN BACK TO START
30102 HRN = RN / HOLD RECORD NUMBER EQUALS RECORD NUMBER
30105 EVAL(RN) = 2 / EVALUATION FLAQ = YES
30110 GOSUB 54200 /QET PROBLEM
30120 RN = P8 / RECORD NUMBER
30130 GOSUB 54000 /QET QUESTION
30140 PRINT KTQ;P8;TAB(10) Q$; /PRINT QUESTION
30145 IF ANS(P8) = -999 THEN PRINT TAB(62)"NA "; ELSE PRINT TAB(61) ANS(P8); /PRINT NO ANSWER OR ANSWER
30150 R = P7 /RULE
30160 GOSUB 32000 / PRINT = OR < OR >
30170 PRINT P9!;" ";TAB(75)P10 /PRINT FACT VALUE, PROBABILITY
30180 GOSUB 17000 / CHECK FOR CONTINUED QUESTION
30200 IF P11 = 0 THEN 31000 / IF NO MORE QUESTIONS THEN
30210 RN = P12 / RECORD NUMBER
30220 GOSUB 54000 / GET QUESTION
30230 PRINT KTQ;P12;TAB(10) Q$; /PRINT QUESTION
30245 IF ANS(P12) = -999 THEN PRINT TAB(62)"NA "; ELSE PRINT TAB(61) ANS(P12);
30250 R = P11
30260 GOSUB 32000 /PRINT = > <
30270 PRINT P13!;" ";TAB(75)P14 /PRINT FACT VALUE PROBABLITY
30280 GOSUB 17000 / CHECK FOR CONTINUED PROBLEM
30300 IF P15 = 0 THEN 31000 / IF NO MORE QUESTIONS THEN
30310 RN = P16 / RECORD NUMBER
30320 GOSUB 54000 / GET QUESTION
30330 PRINT KTQ;P16;TAB(10) Q$; / PRINT QUESTION
30345 IF ANS(P16) = -999 THEN PRINT TAB(62)"NA "; ELSE PRINT TAB(61) ANS(P16);
30350 R = P15 /RULE
30360 GOSUB 32000 /PRINT = < >
30370 PRINT P17!;" ";TAB(75) P18 /PRINT FACT VALUE, PROBABILITY
30380 GOSUB 17000 / CHECK FOR CONTINUED QUESTIONS
30400 IF P19 = 0 THEN 31000 / IF NO MORE QUESTIONS THEN
30410 RN = P20 / RECORD NUMBER
30420 GOSUB 54000 / GET QUESTION
30430 PRINT KTQ;P20;TAB(10) Q$; / PRINT QUESTION
30445 IF ANS(P20) = -999 THEN PRINT TAB(62)"NA "; ELSE PRINT TAB(61) ANS(P20);
30450 R = P19 / RULE
30460 GOSUB 32000 / PRINT = > <
30470 PRINT P21!;" ";TAB(75) P22 / PRINT FACT VALUE PROBABILITY
30480 GOSUB 17000 / CHECK FOR CONTINUED QUESTION
30500 IF P23 = 0 THEN 31000 / IF NO MORE QUESTIONS THEN
30510 RN = P24 / RECORD NUMBER
30520 GOSUB 54000 /GET QUESTION
30530 PRINT KTQ;P24;TAB(10) Q$; /PRINT QUESTION
30545 IF ANS(P24) = -999 THEN PRINT TAB(62)"NA "; ELSE PRINT TAB(61) ANS(P24);
30550 R = P23 /RULE
30560 GOSUB 32000 / PRINT = > <
30570 PRINT P25!;" ";TAB(75) P26
30580 GOSUB 17000 /CHECK FOR CONTINED QUESTION
30600 GOTO 32300 / CHECK FOR CONTINUED PROBLEM
31000 PRINT "WHAT QUESTION ? ";"1 TO ";KTQ;", 0 for NONE, THEN ENTER THE ANSWER"
31100 GOSUB 60000 / INPUT SUBROUTINE
31110 IF DT# < 1 THEN 33000 / IF NO ANSWERS
31115 IF DT# > KTQ THEN 31000 / IF NUMBER EXCEEDS MAXIMUM QUESTION THEN
31120 H = ACT(DT#) / THE QUESTION RECORD NUMBER
31122 NEFLG = 5 / FLAG ON
31130 GOSUB 60120 / INPUT SINGLE PRECISION SUBROUTINE
31132 IF DT# = -999 AND NFLG = 0 THEN 10600 / DONT ACCEPT -999 AS AN ANSWER
31133 NEFLG = 0 / FLAG OFF
31140 ANS(H) = DT# / ANSWER EQUALS VALUE ENTERED
31500 GOTO 31000 / ASK FOR ANOTHER QUESTION
31600 REM CHECK FOR ACCEPTABLE QUESTION TO ANSWER / not used anymore
31605 TEST = 0
31610 FOR T1 = 1 TO KTQ
31620 IF H = ACT(T1) THEN TEST = 1
31630 NEXT T1
31640 IF TEST = 0 THEN 31000
31650 GOTO 31130
32000 REM PRINT RULE
32100 IF R = 1 THEN PRINT "=";
32110 IF R = 2 THEN PRINT "<";
32120 IF R = 3 THEN PRINT ">";
32130 IF R = 4 THEN PRINT "<>";
32140 RETURN
32200 IF R = 1 THEN LPRINT "=";
32210 IF R = 2 THEN LPRINT "<";
32220 IF R = 3 THEN LPRINT ">";
32230 IF R = 4 THEN LPRINT "<>";
32240 RETURN
32300 REM ***** ADDITIONAL RULES FOR THE PROBLEM
32310 IF ABS(P5) < 2 THEN 31000 / IF NO MORE RULES THEN ASK QUESTION
32320 RN = ABS(P5) / RECORD NUMBER EQUALS RECORD NUMBER CONTINED ON
32330 GOTO 30110 / SHOW QUESTIONS ON SCREEN AGAIN
32400 REM ***** ADDITIONAL RULES FOR THE PROBLEM
32410 IF ABS(P5) < 2 THEN 34600 / IF NO MORE RULES
32420 RN = ABS(P5) / RECORD NUMBER EQUALS RECORD NUMBER CONTINUED ON
32430 GOTO 34110
33000 REM / change nodes
33100 PB = HRN / PROBLEM EQUALS HOLD RECORD NUMBER
33110 GOSUB 22000 / COMPUTE PROBABILITY
33115 IF SB(HRN) < 0 THEN 33130 / IF NO MORE SUBRECORDS
33120 IF PFOR(HRN) > 40 AND PA(HRN) <40 THEN ND=HRN / IF PROBABILTY FOR IS GREATER THEN 40 AND PROBABILITY AGAINS IS LESS THEN 40 THEN NODE EQUALS HOLD RECORD
33130 GOTO 20000
34000 REM PRINT ON PAPER QUESTIONS / this section is the same as the 30000
34100 RN = T / SECTION EXCEPT FOR THE PRINTS ARE
34102 HRN = RN / LPRINT
34110 GOSUB 54200
34120 RN = P8
34130 GOSUB 54000
34140 LPRINT P8;TAB(8) Q$;
34145 IF ANS(P8) = -999 THEN LPRINT TAB(60)"NA"; ELSE LPRINT TAB(60) ANS(P8);
34150 R = P7
34160 GOSUB 32200
34170 LPRINT P9!;" ";P10
34180 GOSUB 17200
34200 IF P11 = 0 THEN 34600
34210 RN = P12
34220 GOSUB 54000
34230 LPRINT P12;TAB(8) Q$;
34245 IF ANS(P12) = -999 THEN LPRINT TAB(60)"NA"; ELSE LPRINT TAB(60) ANS(P12);
34250 R = P11
34260 GOSUB 32200
34270 LPRINT P13!;" ";P14
34280 GOSUB 17200
34300 IF P15 = 0 THEN 34600
34310 RN = P16
34320 GOSUB 54000
34330 LPRINT P16;TAB(8) Q$;
34345 IF ANS(P16) = -999 THEN LPRINT TAB(60)"NA"; ELSE LPRINT TAB(60) ANS(P16);
34350 R = P15
34360 GOSUB 32200
34370 LPRINT P17!;" ";P18
34380 GOSUB 17200
34400 IF P19 = 0 THEN 34600
34410 RN = P20
34420 GOSUB 54000
34430 LPRINT P20;TAB(8) Q$;
34445 IF ANS(P20) = -999 THEN LPRINT TAB(60)"NA"; ELSE LPRINT TAB(60) ANS(P20);
34450 R = P19
34460 GOSUB 32200
34470 LPRINT P21!;" ";P22
34480 GOSUB 17200
34500 IF P23 = 0 THEN 34600
34510 RN = P24
34520 GOSUB 54000
34530 LPRINT P24;TAB(8) Q$;
34545 IF ANS(P24) = -999 THEN LPRINT TAB(60)"NA"; ELSE LPRINT TAB(60) ANS(P24);
34550 R = P23
34560 GOSUB 32200
34570 LPRINT P25!;" ";P26
34580 GOSUB 17200
34590 GOTO 32400
34600 RETURN
35000 REM SAVE
35010 GOSUB 500 / CLEAR SCREEN
35100 PRINT " WHAT FILE NAME DO YOU WANT TO SAVE THIS ANALYSIS UNDER"
35110 PRINT " Eight Characters or less no spaces "
35115 PRINT "Just Press return if you do not want to save at this time"
35120 MAX = 8 / STRING LENGTH EQUALS 8
35130 GOSUB 62030 / STRING INPUT SUBROUTINE
35135 IF A$ = "" THEN 20000 / BACK TO START
35140 GOSUB 8000 /CHECK FOR ACCEPTABLE FILE NAME
35150 IF TEST = 4 THEN 35000 / IF BAD FILE NAME
35160 CLOSE #3 / CLOSE FILE 3
35170 OPEN "O",#3,A$ / OPEN A SEQUENTIAL ACCESS FILE WITH NAME THAT WAS JUST ENTERED
35180 WRITE #3, MRN1,MRN2,MRN3 / STORE NUMBER OF QUESTIONS, NUMBER OF PROBLEMS, NUMBER OF SOLUTINS
35190 FOR T = 1 TO MRN1 / FOR ALL QUESTION
35200 WRITE #3, ANS(T) / SAVE ANSWERS
35210 NEXT T
35220 FOR T = 1 TO MRN2 / FOR ALL PROBLEMS
35230 WRITE #3, PFOR(T),PA(T),EVAL(T) / SAVE PROBABILITY FOR, PROBABILTY AGAINST AND EVALUATION
35240 NEXT T
35245 CLOSE #3
35250 GOSUB 53300 / REOPEN SOLUTION FILE
35260 GOTO 20000 / TO START
36000 REM READ SAVED FILES
36100 GOSUB 500 /CLEAR SCREEN
36110 PRINT "DIRECTORY OF ALL FILES ON THE DEFAULT DISK DRIVE :"
36115 PRINT ""
36120 FILES
36130 PRINT "ENTER THE NAME OF THE FILE THAT YOU PREVIOUSLY STORED AN ANALYSIS ON"
36135 PRINT ""
36140 MAX = 8 /LENGTH OF STRING TO INPUT
36150 GOSUB 62030 /INPUT STRING SUBROUTINE
36160 GOSUB 8000 / CHECK FOR VALID FILE NAME
36165 IF TEST = 4 THEN 36000 /IF TEST BAD THEN ASK FOR A NEW FILE NAME
36170 OPEN "I",#3,A$ / OPEN THE FILE
36180 INPUT #3, MRN1,MRN2,MRN3 / READ MAXIMUM RECORD NUMBER FOR QUESTION PROBLEM AND SOLUTIONS
36190 FOR T = 1 TO MRN1 / FOR ALL QUESTIONS
36200 INPUT #3, ANS(T) /READ ANSWERS
36210 NEXT T
36220 FOR T = 1 TO MRN2 / FOR ALL PROBLEMS
36230 INPUT #3, PFOR(T),PA(T),EVAL(T) / READ PROBABILITY FOR, PROBABILTY AGAINST AND EVALUATION
36240 NEXT T
36245 CLOSE #3
36260 RETURN
37000 REM PRINT OUT ALL PROBLEMS
37010 NBRT = 0 / NUMBER OF PROBLEMS EQUALS
37100 GOSUB 500 /CLEAR SCREEN
37110 PRINT " PRINT OUT PROBLEMS "
37115 PRINT ""
37120 PRINT " DO YOU WANT TO CHECK ALL PROBLEMS OR ONLY THOSE SEARCHED ?"
37125 PRINT " 0 - RETURN"
37130 PRINT " 1 - ONLY THOSE AREADY SEARCHED "
37140 PRINT " 2 - ALL - TAKES ALOT LONGER "
37150 GOSUB 60000 / INPUT INTEGER SUBROUTINE
37155 IF DT# < 0 OR DT# > 2 THEN 37100 / LIMITS CHECK
37160 IF DT# = 0 THEN 20000 / TO START
37170 PEVAL = DT# / PROBLEM EVALUTION EQUALS NUMBER INPUT
37200 PRINT " PRINT OUT ALL PROBLEMS WITH A PROBABLILY FOR HIGHER THEN "
37210 PRINT " ENTER A NUMBER FROM -1 TO 100"
37220 GOSUB 60060
37222 IF DT# = -1 THEN 37230
37225 IF DT# < 0 OR DT# > 100 THEN 37200 / LIMITS CHECK
37230 FMIN = DT# /FOR MINIMUM
37240 PRINT " AND WHOSE PROBABLITY AGAINST IS LOWER THEN "
37250 PRINT " ENTER A NUMBER FROM 0 TO 101 "
37260 GOSUB 60060 /INPUT SUBROUTIME FOR INTEGERS
37265 IF DT# < 0 OR DT# > 101 THEN 37240 /LIMITS CHECK
37270 AMAX = DT# /AGAINST MAXIMUM
37300 PRINT " DO YOU WANT THE PROBLEMS "
37310 PRINT " 1 - SHOWN ON THE SCREEN ONLY "
37320 PRINT " 2 - PRINTED ON PAPER AND SHOWN ON THE SCREEN"
37325 PRINT " 3 - PRINTED ON PAPER WITH SUPPORTING RULES "
37330 GOSUB 60000 / INPUT SUBROUTINE
37340 IF DT# < 1 OR DT# > 3 THEN 37300 /LIMITS CHECK
37350 PPRT = DT# /PRINT FLAG
37400 REM ***** START LOOP
37410 FOR T = 1 TO MRN2 / FOR ALL PROBLEMS
37420 IF PEVAL = 1 AND EVAL(T) = 0 THEN 37600 / IF NOT EVALUATED AND ON TO CHECK EVALUATED PROBLEMS THEN SKIP
37422 PB = T / PROBLEM
37424 GOSUB 22000 / COMPUTE PROBABILITY
37430 IF PFOR(T) > FMIN AND PA(T) < AMAX THEN GOSUB 38000 / IF MEETS THE PROBABILTY LIMITS
37600 NEXT T
37610 GOTO 39000
38000 REM **** SUBROUTINE FOR PROBLEMS THAT MEET THE LIMITS
38005 NBRT = NBRT + 1 / INCREMENT PROBLEM COUNT
38006 IF NBRT > 250 THEN NBRT = 250 / AT LIMIT OF DIMENSION
38007 PBM(NBRT) = T / THE NBRT'th problem that meets the limits is
38010 RN = T / RECORD NUMBER
38020 GOSUB 54200 / GET PROBLEM
38025 IF P5 < 0 THEN RETURN / IF IS A CONTINUATION THEN RETURN
38030 PRINT T;P1$; TAB(55) PFOR(T); TAB(60) PA(T)
38040 IF PPRT > 1 THEN LPRINT T;P1$;TAB(55) PFOR(T);TAB(60) PA(T)
38050 RN = P4 /RECORD NUMBER
38060 GOSUB 54427 / GET SOLUTION
38065 GOSUB 40000 / DETERMINE PROBABILITY OF SUCCESS
38080 IF PPRT > 1 THEN LPRINT P4;TAB(6)"SOLUTION ";S1$;" SUCCESS ";SS
38085 IF PPRT = 3 THEN GOSUB 34000 / PRINT SUPPORTING QUESTIONS ON PAPER
38200 RETURN
38218 S2H = S2 / SOLUTIN HOLD
39000 REM CONT
39010 IF NBRT = 250 THEN PRINT " THERE ARE TOO MANY PROBLEMS TO DO A SEARCH "
39020 IF NBRT = 250 THEN PRINT " A SEARCH MAY ONLY BE CONDUCTED ON 249 OR LESS PROBLEMS "
39100 PRINT "DO YOU WANT TO CONDUCT A SEARCH FOR ALL AND MULTIPLE SOLUTIONS ?"
39110 PRINT " 1 - YES SEARCH "
39120 PRINT " 2 - NO "
39130 GOSUB 60000 / INPUT SUBROUTINE
39140 IF DT# < 1 OR DT# > 2 THEN 39100 /LIMITS CHECK
39150 IF DT# = 2 THEN 20000 / BACK TO START
39200 REM **** START SEARCH
39210 FOR S = 1 TO MRN3 / FOR ALL SOLUTIONS
39215 NPRT = 1
39217 RN = S /RECORD NUMBER
39220 GOSUB 54427 / GET SOLUTION
39225 IF S2 < 1 THEN 39290 / SKIP IF A CONTINUED SOLUTION
39230 FOR N = 1 TO NBRT / FOR ALL PROBLEMS THAT MEET THE LIMITS
39235 IF ABS(S2H) > 1 THEN RN = S / RESTORE RECORD NUMBER
39237 IF ABS(S2H) > 1 THEN GOSUB 54427 / REGET RECORD
39240 T = PBM(N) / PROBLEM
39250 SS = 0
39260 GOSUB 40000 / GET SUCCESS RATE
39270 IF SS > 0 THEN GOSUB 39500 / PRINT SOLUTION
39280 NEXT N / NEXT PROBLEM
39290 NEXT S / NEXT SOLUTION
39300 PRINT "******* PRESS ANY KEY TO CONTINUE *******"
39310 IF INKEY$ = "" THEN 39310 / STAY HERE UNTILL ANY KEY IS PRESSED
39480 GOTO 20000 / BACK TO START
39500 REM PRINT PROBLEM
39502 RN = S / RECORD NUMBER
39504 GOSUB 54427 / GET SOLUTION
39510 RN = T / RECORD NUMBER
39520 GOSUB 54200 / GET PROBLEM
39530 IF NPRT = 1 THEN PRINT S;"SOLUTION ";S1$;" SOLVES :" / IF NOT ALREADY PRINTED THEN PRINT
39535 IF NPRT = 1 AND PPRT > 1 THEN LPRINT S;"SOLUTION ";S1$;" SOLVES :" / IF NOT ALREADY PRINTED THEN PRINT
39540 PRINT T;TAB(6) P1$;" SUCCESS RATE";SS
39545 IF PPRT > 1 THEN LPRINT T;TAB(6) P1$;" SUCCESS RATE";SS
39550 NPRT = 0 / ALREADY PRINTED
39560 RETURN
39980 GOTO 20000
40000 REM * DETERMINE PROBABILIYTY OF SUCCESS
40100 IF T = S4 THEN SS = S5 / IF THE PROBLEM NUMBER THEN SUCCESS RATE IS
40110 IF T = S6 THEN SS = S7 / " "
40120 IF T = S8 THEN SS = S9 / " "
40130 IF T = S10 THEN SS = S11/ " "
40140 IF T = S12 THEN SS = S13/ " "
40145 IF ABS(S2) > 1 THEN GOTO 40200 / IF CONTINUED SOLUTIONS
40150 RETURN
40200 REM *** SOLUTIONS CONTINUED
40210 RN = ABS(S2) / CHANGE NEGATIVES TO POSITIVE
40215 S2H = S2 / SOLUTION HOLD
40220 GOSUB 54427 / GET NEW SOLUTION
40230 GOTO 40000 / CONTINUE TO LOOK FOR SUCCESS RATE
41000 REM ** PRINT OUT QUESTIONS
41100 GOSUB 500 / CLEAR SCREEN
41110 PRINT " DO YOU WANT "
41120 PRINT " 1 - ONLY QUESTIONS ANSWERED SHOWN"
41130 PRINT " 2 - ALL QUESTIONS SHOWN "
41140 GOSUB 60000 / INPUT INTEGERS
41150 IF DT# < 0 OR DT# > 2 THEN 41000 / LIMITS CHECK
41155 IF DT# = 0 THEN 20000 / RETURN TO START
41160 QT = DT#
41170 PRINT " DO YOU WANT "
41180 PRINT " 1 - SHOWN ON THE SCREEN ONLY "
41190 PRINT " 2 - SHOWN ON THE SCREEN AND PRINTED ON PAPER"
41195 PRINT " MAKE SURE YOUR PRINTER IS ON "
41200 GOSUB 60000
41210 IF DT# < 1 OR DT# > 2 THEN 41170 / LIMITS CHECK
41220 PRTFLG = DT# / PRINTFLAG
41300 REM *** START LOOP
41310 FOR T = 1 TO MRN1 / FOR ALL QUESTIONS
41315 IF INKEY$ >< "" THEN GOSUB 42000 / TO PAUSE SUBROUTINE
41320 IF ANS(T) = -999 AND QT = 1 THEN 41700 / SKIP IF NO ANSWER AND OPTION TO SKIP THOSE NOT ANSWERED
41330 RN = T / RECORD NUMBER
41340 GOSUB 54000 /GET QUESTION
41345 IF Q3 < 0 THEN 41700 / IF A CONTINUED QUESTION THEN SKIP
41350 PRINT T;TAB(5);Q$; / PRINT QUESTION
41355 IF ANS(T) = -999 THEN PRINT TAB(60) "NA" ELSE PRINT TAB(60) ANS(T) / PRINT ANSWER
41360 IF PRTFLG = 2 THEN LPRINT T;TAB(5);Q$; / IF PRINTFLAG 1 THEN PRINT
41362 IF PRTFLG = 2 THEN GOSUB 41800
41364 GOSUB 17000 / CHECK FOR CONTINUED QUESTION
41365 REM IF PRTFLG = 2 THEN GOSUB 17200
41700 NEXT T
41710 PRINT " PRESS ANY KEY TO CONTINUE "
41720 IF INKEY$ = "" THEN 41720 / STAY HERE UNTILL A KEY IS PRESSED
41730 GOTO 20000 / BACK TO START
41800 IF ANS(T) = -999 THEN LPRINT TAB(60) "NA" ELSE LPRINT TAB(60) ANS(T)
41810 RETURN
42000 REM ****** PAUSE SUBROUTINE
42100 PRINT " PRESS ANY KEY TO CONTINUE "
42110 IF INKEY$ = "" THEN 42110 / STAY HERE UNTILL A KEY IS PRESSED
42120 RETURN
50000 REM ********** INTRO
50010 GOSUB 500 / CLEAR SCREEN
50100 PRINT " E X P E R T S Y S T E M P R O G R A M 1.0 "
50105 PRINT ""
50110 PRINT " Copyright 1984 by Potomac Pacific Engineering Inc."
50120 PRINT ""
50130 PRINT "This program is licensed FREE to all users with some restrictions"
50165 PRINT " See the manual for more information on the license."
50167 PRINT ""
50950 PRINT "*********************** DO YOU WANT TO ************************"
50960 PRINT " 1 - START A NEW PROBLEM "
50970 PRINT " 2 - CONTINUE WITH A PROIR ANALYSIS "
50975 PRINT "*************** ENTER THE NUMBER THEN PRESS RETURN *************"
50980 GOSUB 60000 / INPUT SUBROUTINE
50985 IF DT# <1 OR DT# > 2 THEN 50000 / LIMITS CHECK
50990 RETURN
51000 REM ***** EXIT TO SYSTEM
51010 GOTO 51200 / GIVE WARNING
51100 GOSUB 500 / CLEAR SCREEN
51110 CLOSE / CLOSE ALL FILES
51120 PRINT " -BYE, Have a nice day"
51130 END
51200 REM WANRING
51210 GOSUB 500 / CLEAR SCREEN
51220 PRINT " YOU WILL LOSE YOUR ANSWERS UNLESS YOU HAVE PREVIOUSLY SAVED THEM"
51230 PRINT ""
51240 PRINT " DO YOU WANT TO :"
51250 PRINT " 1 - EXIT THE PROGRAM "
51260 PRINT " 2 - RETURN TO OPTIONS "
51270 PRINT " ENTER THE NUMBER THEN PRESS RETURN "
51280 GOSUB 60000 / INPUT SUBROUTINE
51290 IF DT# < 1 OR DT# > 2 THEN 51280 / LIMITS CHECK
51300 ON DT# GOTO 51100,19000 / ON NUMBER ENTERED GOTO
52000 REM ***** INTRO 1
52010 GOSUB 500 / CLEAR SCREEN
52100 PRINT " Put the Expert System disk the default disk drive "
52110 PRINT ""
52120 PRINT " ***** THEN PRESS ANY KEY TO CONTINUE *****"
52130 PRINT ""
52140 PRINT " The Expert System ONLY uses the Expert System Disk "
52150 PRINT "Keep it in the default disk drive at all times during this program."
52200 IF INKEY$ = "" GOTO 52200 /STAY HERE UNTILL ANY KEY IS PRESSED
52210 RETURN
53000 REM OPEN AND FIELD FILES
53100 OPEN "R",#1,"QUESTION",56 / OPEN QUESTON FILE
53110 FIELD #1, 50 AS Q$,2 AS Q2$,2 AS Q3$,2 AS Q4$
53200 OPEN "R",#2,"PROBLEMS",120 / OPEN PROBLEM FILE
53210 FIELD #2, 50 AS P1$,2 AS P2$,2 AS P3$,2 AS P4$,2 AS P5$,2 AS P6$, 2 AS P7$, 2 AS P8$,4 AS P9$,4 AS P10$,2 AS P11$,2 AS P12$,4 AS P13$,4 AS P14$,2 AS P15$,2 AS P16$
53220 FIELD #2,88 AS DY$,4 AS P17$,4 AS P18$,2 AS P19$,2 AS P20$,4 AS P21$,4 AS P22$,2 AS P23$,2 AS P24$,4 AS P25$,4 AS P26$
53300 OPEN "R",#3,"SOLUTION",74 / OPEN SOLUTION FILE
53310 FIELD #3, 50 AS S1$, 2 AS S2$,2 AS S3$,2 AS S4$,2 AS S5$,2 AS S6$,2 AS S7$,2 AS S8$,2 AS S9$,2 AS S10$,2 AS S11$,2 AS S12$,2 AS S13$
53350 REM GET MAXIMUM NUMBER OF RECORDS
53360 MRN1 = LOF(1) / 56 / NUMBER OF QUESTION
53370 MRN2 = LOF(2) / 120 / NUMBER OF PROBLEMS
53380 MRN3 = LOF(3) / 74 / NUMBER OF SOLUTIONS
53400 RETURN
54000 REM get and convert files
54010 KTQ = KTQ + 1 / INCREMENT QUESTION COUNT
54100 REM question file
54105 GET #1,RN / GET QUESTION WITH RECORD
54110 Q2 = CVI(Q2$) / ALWAYS ASKED
54120 Q3 = CVI(Q3$) / CONTINUED ON
54130 Q4 = CVI(Q4$) / DUMMY
54140 ACT(KTQ) = RN / ACCEPTABLE QUESTION EQUALS RECORD NUMBER
54160 IF KTQ > 20 THEN KTQ = 1
54170 RETURN
54200 REM PROBLEM FILE
54203 GET #2,RN
54205 P2 = CVI(P2$) / SUBPROBLEM TO
54210 P3 = CVI(P3$) / PRIORITY
54220 P4 = CVI(P4$) / PRIMARY SOLUTION
54230 P5 = CVI(P5$) / CONTINUED ON RECORD NUMBER
54240 P6 = CVI(P6$) / DUMMY
54250 P7 = CVI(P7$) / RULE TYPE
54260 P8 = CVI(P8$) / QUESTION
54270 P9!= CVS(P9$) / FACT VALUE
54280 P10 = CVS(P10$) / PROBABILITY
54290 P11 = CVI(P11$) / RULE TYPE 2
54300 P12 = CVI(P12$) / QUESTION 2
54310 P13!= CVS(P13$) / FACT VALUE 2
54320 P14 = CVS(P14$) / PROBABILIY 2
54330 P15 = CVI(P15$) / RULE TYPE 3
54340 P16 = CVI(P16$) / QUESTION 3
54350 P17!= CVS(P17$) / FACT VALUE 3
54360 P18 = CVS(P18$) / PROBABILITY 3
54370 P19 = CVI(P19$) / RULE TYPE 4
54380 P20 = CVI(P20$) / QUESTION 4
54390 P21!= CVS(P21$) / FACT VALUE 4
54400 P22 = CVS(P22$) / PROBABILITY 4
54410 P23 = CVI(P23$) / RULE TYPE
54420 P24 = CVI(P24$) / QUESTION
54422 P25!= CVS(P25$) / FACT VALUE
54424 P26 = CVS(P26$) / PROBABILITY
54426 RETURN
54427 GET #3, RN / GET SOLUTION
54428 S2 = CVI(S2$) / CONTINUED ON
54430 S3 = CVI(S3$) / DUMMY
54440 S4 = CVI(S4$) / PROBLEM 1
54450 S5 = CVI(S5$) / SUCCESS RATE 1
54460 S6 = CVI(S6$) / PROBLEM 2
54470 S7 = CVI(S7$) / SUCCESS RATE 2
54480 S8 = CVI(S8$) / PROBLEM 3
54490 S9 = CVI(S9$) / SUCCESS RATE 3
54500 S10 = CVI(S10$) / PROBLEM 4
54510 S11 = CVI(S11$) / SUCCESS RATE 4
54520 S12 = CVI(S12$) / PROBLEM 5
54530 S13 = CVI(S13$) / SUCCESS RATE 5
54540 RETURN
60000 REM ******* INTEGER LESS THEN 100 CHECK ********
60010 MAX = 2 / SEE THE REMARKS FOR THE MAIN PROGAM IF YOU WANT TO SEE HOW THIS INPUT SUBROUTINE WORKS